home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / cmln0886.arc / SCHEME1.LTG < prev    next >
Text File  |  1986-06-24  |  1KB  |  23 lines

  1.  
  2. Listing 1
  3.  
  4. ;;;  Pattern: a pattern matcher in LISP
  5. ;;╗  (ModifieΣ froφ Commoε LIS╨ t∩ SCHEM┼ froφ "AI Eye," 
  6. ;;;  COMPUTER LANGUAGE, Jan. & Mar. 1986)
  7. ;;;  
  8. ;;;  Test by entering: (match '(Now) '(and then)), 
  9. ;;;  which should return  () and
  10. ;;;  (match '(This is mine) '(This is mine)), 
  11. ;;;  which should return #!TRUE.  
  12.  
  13.  (DEFINE MATCH (LAMBDA (P E)
  14.     (COND ((OR (EQUAL? P E)                  ;Identical things match
  15.                (MEMBER P '(? *))) T)         ;? and * match anything
  16.           ((OR (ATOM? P) (ATOM? E)) NIL)     ;No match now if not both list
  17.           ((EQUAL? (CAR P) '*)               ;If pattern starts with *, we
  18.            (OR (MATCH (CDR P) (CDR E))       ; match if both tails match or
  19.                (MATCH (CDR P) E)
  20.          (T (AND (MATCH (CAR P) (CAR E))     ;Else we match if heads match
  21.                   (MATCH (CDR P) (CDR E))))))  ; and tails match
  22.  
  23.